package object3;

/**
 * 接口
 * interface 接口名{
 *     //属性
 *     //抽象方法
 * }
 *
 * class 类名 implements 接口 {
 *     //自己属性
 *     //自己方法
 *     //必须实现接口的抽象方法
 * }
 */
public class Interface01 {

    public static void main(String[] args) {

        /*
            接口就是给出一些没有实现的方法，封装到一起，到某个类需要使用的时候，再根据具体情况把这些方法写出来
            其实接口是更加抽象的抽象类，抽象类里可以有方法体，接口里的所有方法都没有方法体(jdk7之前)。
            接口体现了程序设计的多态和高内聚低耦合的设计思想
            例：
            有一个项目经理，管理三个程序员，功能开发一个软件，为了控制和管理软件，项目经理可以定义一些接口然后让程序员具体实现
            (1.项目质量 2.项目进度 3.项目奖) 参加工作
         */

        MysqlDB mysqlDB = new MysqlDB();
        t(mysqlDB);

        OracleDB oracleDB = new OracleDB();
        t(oracleDB);
    }

    public static void t(DBInterface db) {
        db.connect();
        db.close();
    }
}

interface DBInterface {//项目经理

    public void connect();//连接方法

    public void close();//关闭连接

}

class MysqlDB implements DBInterface {

    @Override
    public void connect() {
        System.out.println("连接mysql");
    }

    @Override
    public void close() {
        System.out.println("关闭mysql");
    }

}

class OracleDB implements DBInterface {


    @Override
    public void connect() {
        System.out.println("连接oracle");
    }

    @Override
    public void close() {
        System.out.println("关闭oracle");
    }
}